package com.jiantong.work.service;

import com.jiantong.work.model.SupervisionRecords;
import io.terminus.common.model.Paging;
import io.terminus.common.model.Response;

import java.util.List;
import java.util.Map;

/**
 * 督查管理-督查记录
 * Created by mz03 on 2017/3/24.
 * @author :zyp
 */
public interface SupervisionRecordsReadService {

    /**
     * id 查找
     * @param id
     * @return Quotes
     */
    Response<SupervisionRecords> finById(Long id);

    /**
     * 分页查找全部  未确定添加什么条件
     */
    Response<Paging<SupervisionRecords>> findByAll(Integer pageNo, Integer pageSize);

    /**
     * 根据状态分页查找
     */
    Response<Paging<SupervisionRecords>> findByStatus(Integer pageNo, Integer pageSize, Integer status);


    /**
     * 不分页
     * 根据状态查询当月所有人的督查记录 根据养殖场去重  用来显示督查轨迹地图上的养殖场(当前操作人员为管理人员时)
     *
     * @param status
     * @return Paging<SupervisionRecords>
     */
    Response<List<SupervisionRecords>> findByMonth(Integer status);

    /**
     * 不分页
     * 根据状态查询当月指定一个政府工作人员参与的督查记录,如果userId为null就查询全部  去重  用来显示督查轨迹地图上的养殖场(当前操作人员为工作人员时)
     * @param status
     * @param userId
     * @return Paging<SupervisionRecords>
     */
    Response<List<SupervisionRecords>> findByMonthUserId(Integer status,Long userId, List<Long> breedFactoryIds);

    /**
     * 分页 不去重
     * 只根据status查看全部轨迹
     *
     * @param pageNo
     * @param pageSize
     * @param status
     * @return Paging<SupervisionRecords>
     */
    Response<Paging<SupervisionRecords>> findByMonthStatus(Integer pageNo, Integer pageSize, Integer status);

    /**
     * 分页 不去重
     * 只根据status查看全部轨迹
     *
     * @param pageNo
     * @param pageSize
     * @param status
     * @param userId
     * @return Paging<SupervisionRecords>
     */
    Response<Paging<SupervisionRecords>> findByMonthStatusAndUserId(Integer pageNo, Integer pageSize, Integer status,Long userId);

    /**
     *  分页
     *  根据养殖场名字查询存在这个养殖场上的督查轨迹,并且是当月的,所有的督查记录.     用来点击地图上的点显示详情
     * @param pageNo
     * @param pageSize
     * @param status
     * @param breedFactoryId
     * @return Paging<SupervisionRecords>
     */
    Response<Paging<SupervisionRecords>> findByMonthBreedName(Integer pageNo, Integer pageSize,Integer status,Long breedFactoryId);

     /**
      *  分页
      *  根据养殖场名字查询存在这个养殖场上的督查轨迹,并且是当月的,指定督查人的督查记录.     用来点击地图上的点显示详情
      * @param pageNo
      * @param pageSize
      * @param status
      * @param breedFactoryId
      * @param userId
      * @return Paging<SupervisionRecords>
      */
     Response<Paging<SupervisionRecords>> findByMonthBreedNameUserId(Integer pageNo, Integer pageSize,Integer status,Long breedFactoryId,Long userId);


    /**
     *  根据养殖场Id查询存在这个养殖场上的督查轨迹,并且是当月的,所有的督查记录.     用来组SupervisionRecordsDTO
     * @param status
     * @param breedFactoryId
     * @param userId
     * @return List<SupervisionRecords>
     */
    Response<List<SupervisionRecords>> findByMonthBreedId(Integer status,Long breedFactoryId,Long userId);


    Response<Paging<SupervisionRecords>> pagingCommon(Integer pageNo, Integer pageSize, Map criteria);

    /**
     * 查询所有督察人员名单，去重
     * @return
     */
    Response<List<String>> findAllName();

    Response<Paging<SupervisionRecords>> pagingcommon(Integer pageNo, Integer pageSize, Map criteria);
}
